package com.yc.test;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyuncs.exceptions.ClientException;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class UploadImageToOSS {
    public static void main(String[] args) throws ClientException {
        // 阿里云OSS服务的Endpoint。服务的访问域名，指定了阿里云OSS服务的网络节点
        //把beijing改成自己配置的地域就ok了
        String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
        // 从环境变量中获取访问凭证。运行本代码示例之前，请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
//        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        String id = "LTAI5tFnuVihShkaQ1PcZJpE";
        String key = "7YBzHfNdwDhLp9dxYUqUVSoyHJm8or";

        // 你的阿里云OSS存储桶名称。填写Bucket名称，
        String bucketName = "yc140test2";
        // OSS中的文件键（Key），即上传后的文件名。
        String fileKey = "h.jpg"; // 保存到OSS的文件名
        // 本地系统中的文件路径，用于找到你想上传的文件。"C:\Users\86178\Pictures\R-C.jpg"
        String filePath = "C:\\Users\\86178\\Pictures\\R-C.jpg"; // 本地文件路径

        // 使用OSSClientBuilder构建一个OSS客户端实例。
//        OSS ossClient = new OSSClientBuilder().build(endpoint,credentialsProvider);
        OSS ossClient = new OSSClientBuilder().build(endpoint,id,key);

        try {
            // 创建一个文件输入流，用于读取本地文件。
            FileInputStream inputStream = new FileInputStream(filePath);
            // 调用OSS客户端的putObject方法上传文件。传入存储桶名、文件键和文件输入流。
            ossClient.putObject(bucketName, fileKey, inputStream);
            System.out.println("上传成功");
        } catch (FileNotFoundException e) {
            System.out.println("文件未找到：" + e.getMessage());
        } finally {
            // 最终，无论上传成功还是失败，都关闭OSS客户端实例以释放资源。
            ossClient.shutdown();
        }
    }
}
